package data_structure;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class leetcode_0257 {
    public List<String> binaryTreePaths(TreeNode root) {
        List<String> list=new LinkedList<>();
        List<Integer> path=new ArrayList<>();
        if(root==null) return list;
        path.add(root.val);
        pathadd(list,path,root);
        return list;
    }
    public void pathadd(List<String> list,List<Integer> path,TreeNode node){
        if(node.left==null&&node.right==null){
            int len=path.size();
            String s="";
            for(int i=0;i<len-1;++i){
                s+=path.get(i);
                s+="->";
            }
            s+=path.get(len-1);
            list.add(s);
            return;
        }
        if(node.left!=null){
            path.add(node.left.val);
            pathadd(list,path,node.left);
            path.remove(path.size()-1);
        }
        if(node.right!=null){
            path.add(node.right.val);
            pathadd(list,path,node.right);
            path.remove(path.size()-1);
        }
    }
}
